/**
 * ControladoraPerfiles.java
 */

 /**
 *  AdSec: Administrador de Secundarias
 *  Copyright (C) 2009 Daniela Ramírez Chaves (dannyrch@gmail.com)
 *  Copyright (C) 2009 Leonel Salazar Valverde (leo87sv@gmail.com)
 *
 *  This file is part of AdSec.
 *  AdSec is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  AdSec is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with AdSec.  If not, see <http://www.gnu.org/licenses/>.
 */

package adsec.negocios;

import adsec.entidades.Perfil;
import adsec.datos.ControladoraBDPerfiles;
import adsec.entidades.PerfilYUsuarioBD;
import java.util.LinkedList;

public class ControladoraPerfiles {

    private ControladoraBDPerfiles controladoraBD;
    private LinkedList<Perfil> listaPerfiles;

    public ControladoraPerfiles(){
        this.controladoraBD = new ControladoraBDPerfiles();
        this.listaPerfiles = new LinkedList<Perfil>();
    }//fin de constructor

    public PerfilYUsuarioBD consultarPerfil(int idPerfil){
        return this.controladoraBD.consultarPerfil(idPerfil);
    }

    public PerfilYUsuarioBD consultarPerfilGrid(int filaPerfil){
        PerfilYUsuarioBD perfilYUsuario = new PerfilYUsuarioBD();
        if(filaPerfil >= 0 && filaPerfil < this.listaPerfiles.size()){
            perfilYUsuario = this.consultarPerfil(this.listaPerfiles.get(filaPerfil).getIdPerfil());
			if(perfilYUsuario.getUsuarioBD() != null){
				perfilYUsuario.getUsuarioBD().setPassword(
						this.desencriptarPassword(perfilYUsuario.getUsuarioBD().getPasswordEncriptado()));
			}
        }
        return perfilYUsuario;
    }//fin de consultarPerfilGrid

    public LinkedList<Perfil> consultarPerfiles(){
        this.listaPerfiles = this.controladoraBD.consultarPerfiles();
        return this.listaPerfiles;
    }

    public int insertarPerfil(PerfilYUsuarioBD perfilYUsuario){
		int resultado = UtilidadesCapaNegocios.QUERY_ERROR;
		if(perfilYUsuario.getUsuarioBD() != null){
			if ( perfilYUsuario.getUsuarioBD().setPasswordEncriptado(
					this.encriptarPassword(perfilYUsuario.getUsuarioBD().getPassword())) ){
				
				resultado = this.controladoraBD.insertarPerfil(perfilYUsuario);
			}
		}
        return resultado;
    }

    public int modificarPerfil(PerfilYUsuarioBD perfilYUsuario){
        int resultado = UtilidadesCapaNegocios.QUERY_ERROR;
		if(perfilYUsuario.getUsuarioBD() != null){
			if ( perfilYUsuario.getUsuarioBD().setPasswordEncriptado(
					this.encriptarPassword(perfilYUsuario.getUsuarioBD().getPassword())) ){

				resultado = this.controladoraBD.modificarPerfil(perfilYUsuario);
			}
		}
		return resultado;
    }

    public int eliminarPerfil(int idPerfil){
        return this.controladoraBD.eliminarPerfil(idPerfil);
    }

    public int getIdPerfil(int indiceLista){
        int idPerfil = -1;
        if(indiceLista >= 0 && indiceLista < this.listaPerfiles.size()){
            idPerfil = this.listaPerfiles.get(indiceLista).getIdPerfil();
        }
        return idPerfil;

    }

	public byte [] encriptarPassword(String password){
		ControladoraLogin contLogin = new ControladoraLogin();
		return contLogin.encriptar(password);
	}

	public String desencriptarPassword(byte [] password){
		ControladoraLogin contLogin = new ControladoraLogin();
		return contLogin.desencriptar(password);
	}

}//fin de clase ControladoraPerfiles
